<?php
namespace app\service;

class StringMatcher
{
    private $dataArray = [
        // 第2行数据
        '633667(1)', '633661(2)', '633664(3)', '366376(4)', '366316(5)', '366346(6)', '647863(3)', '165336(5)1',
        
        // 第3行数据 - 容易实现
        '472543(1)', '472545(2)', '472548(3)', '573653(1)', '573655(2)', '573658(3)', 
        '486744(1)', '486746(2)', '486747(3)', '587854(1)', '587856(2)', '587857(3)',
        '748834(4)', '748854(5)', '748884(6)', '754235(4)', '754255(5)', '754285(6)',
        '848844(4)', '848864(5)', '848874(6)', '854245(4)', '854265(5)', '854275(6)',
        '647884(5)0', '446784(4)0', '446748(1)', '352175(4)0', '452147(2)0', '452185(4)',
        '553257(2)', '553275(5)','125352(4)0','647863(3)0',
        
        // 第4行数据 - 重复第3行
        
        // 第8行数据
        '145718(1)', '145712(2)', '145713(3)', '151111(1)', '151117(2)', '151116(3)',
        '245728(1)', '245722(2)', '245723(3)', '251121(1)', '251127(2)', '251126(3)',
        '412181(4)', '412121(5)', '412131(6)', '513211(4)', '513271(5)', '513261(6)',
        '426382(4)', '426322(5)', '426332(6)', '527412(4)', '527472(5)', '527462(6)',
        '125314(2)1', '225324(2)', '225342(5)', '211141(5)',
        
        // 第9行数据
        '868482(1)', '868488(2)', '868485(3)', '768472(1)', '768478(2)', '768475(3)',
        '687828(4)', '687888(5)', '687858(6)', '673627(4)', '673687(5)', '673657(6)',
        
        // 第12行数据
        '312135(1)', '312133(2)', '312132(3)', '326336(1)', '326334(2)', '326331(3)',
        '131553(4)', '131533(5)', '131523(6)', '231563(4)', '231543(5)', '231513(6)',
        '353231(1)'
    ];
    
    public function __construct()
    {
        
    }
    
    /**
     * 处理字符串并匹配
     * @param string $str 输入字符串，如 145713(3)0
     * @return string 返回"容易实现"或"不易实现"
     */
    public function match($str)
    {
        // 处理字符串：去除)后面的内容
        $processedStr = $this->processString($str);
        
        // 在数组中匹配
        if ($this->findInArray($processedStr)) {
            return true;
        }
        
        return false;
    }
    
    /**
     * 处理字符串，去除)后面的内容
     * @param string $str
     * @return string
     */
    private function processString($str)
    {
        // 先将中文括号转换为英文括号
        $str = str_replace(['（', '）'], ['(', ')'], $str);
        
        // 查找)的位置
        $pos = strpos($str, ')');
        
        if ($pos !== false) {
            return substr($str, 0, $pos + 1);
        }
        
        return $str;
    }
    
    /**
     * 在数组中查找匹配项
     * @param string $needle
     * @return bool
     */
    private function findInArray($needle)
    {
        foreach ($this->dataArray as $item) {
            // 去除)后面可能的额外字符进行比较
            $cleanItem = preg_replace('/\).*$/', ')', $item);
            
            if ($needle === $cleanItem) {
                return true;
            }
        }
        
        return false;
    }
    
    /**
     * 获取所有数据（调试用）
     * @return array
     */
    public function getAllData()
    {
        return $this->dataArray;
    }
}